package com.ffcs.crmd.tsp.task.job.api;

import java.util.Date;
import java.util.List;

import com.ffcs.crmd.tsp.common.job.entity.TspJobDataMap;
import com.ffcs.crmd.tsp.common.job.entity.TspJobDetail;

/**
 * 
 * 功能说明:调度执行上下文环境接口
 *
 * @author ZHONGFUHUA
 * 
 * @since 1.0.0-SNAPSHOT
 * 
 * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext
 */
@Deprecated
public interface IJobExecutionContext<T> {
    
    /**
     * 
     * 功能说明:获取任务参数
     * 
     * @return
     * 
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#getTspJobDataMap
     */
    public TspJobDataMap getTspJobDataMap();
    
    /**
     * 
     * 功能说明:子任务对象
     * 
     * @return
     * 
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#getTspJobInstance
     */
    @Deprecated
    public TspJobDetail getTspJobDetail();
    
    /**
     * 
     * 功能说明:当前执行时间
     * 
     * @return
     */
    public Date getFireTime();
    
    /**
     * 
     * 功能说明:调度中心执行时间
     * 
     * @return
     */
    public Date getScheduledFireTime();
    
    /**
     * 
     * 功能说明:上一次执行时间
     * 
     * @return
     */
    public Date getPreviousFireTime();
    
    /**
     * 
     * 功能说明:下一次执行时间
     * 
     * @return
     */
    public Date getNextFireTime();
    
    /**
     * 
     * 功能说明:集群实例ID
     * 
     * @return
     */
    public String getFireInstanceId();
    
    /**
     * 
     * 功能说明:任务执行时长
     * 
     * @return
     */
    public long getJobRunTime();
    
    /**
     * 
     * 功能说明:调度中心中断重启后是否可恢复
     * 
     * @return
     */
    public boolean isRecovering();
    
    /**
     * 
     * 功能说明:重新执行次数
     * 
     * @return
     */
    public int getRefireCount();
    
    /**
     * 
     * 功能说明:添加参数
     * 
     * @param param 参数
     * 
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#joinBussinessData
     */
    @Deprecated
    public void addParam(T param);
    
    /**
     * 
     * 功能说明:添加参数
     * 
     * @param param 参数
     * 
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#joinBussinessDatas
     */
    @Deprecated
    public void addParam(List<T> param);
    
    /**
     * 
     * 功能说明:移除参数
     * 
     * @param param 参数
     * 
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#removeBussinessData
     */
    @Deprecated
    public void removeParam(T param);
    
    /**
     * 
     * 功能说明:清除所有参数
     *
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#removeAllBussinessData
     */
    @Deprecated
    public void clearParam();
    
    /**
     * 
     * 功能说明:获取所有参数
     * 
     * @return
     * 
     * @see com.ffcs.crmd.tsp.api.task.job.IJobExecutionContext#getBussinessDatas
     * 
     */
    @Deprecated
    public List<T> getParam();
    
    /**
     * 
     * 功能说明:获取分片组内分片信息
     * 
     * @return
     */
    public String[] getSlices();
    
    /**
     * 
     * 功能说明:设置分片组(特殊情况外应用不需要使用)
     * 
     * @param slices
     */
    @Deprecated
    public void setSlices(String[] slices);
    
    /**
     * 
     * 功能说明:获取转换分片的sql语句
     * 
     * @param sql
     * @return
     */
    public String getHintSQLByDataNodes(String sql);
}
